################################################################################ 
#
# The distribution of hate speech and its implications for content moderation
# PSRM - Replication package
# Table E6
#
################################################################################ 


################################################################################ 
#  LIBRARIES
################################################################################ 

library(estimatr)

rm(list = setdiff(ls(), ls(pattern = "^wd|^setsave$")))

data = read.csv(paste0(wd_data_processed, '/for_analysis/clean_for_analysis.csv'))
data = data[which(data$attrition==0 & data$not_auth_sofar==0 & data$suspended_sofar==0 & data$protected_sofar==0),]

################################################################################ 
#   VARIABLES as in the PAP
################################################################################


outvars = c('anchor_deleted_12h', 'no_hate_tweets_post_85', 'hate_rate_85', 'post_tweets_h_avg')
outvars_name = c( 'Xenophobic Tweet Deleted <12h', '# Hate Tweets', 'Share of daily hate', 'Probability of Hate Speech') 

treatments = c('empathy', 'consequences', 'alert')
treatments_lab = c('Empathy',  'Warning of Consequences',
                    'Alerting of Hate Speech')



################################################################################ 
#   VARIABLES as in the PAP
################################################################################

data$treat_label2 = ifelse(data$treat_label %in% c('empathy_get', 'empathy_take'), 'empathy', 
                              ifelse(data$treat_label %in% c('ban', 'humor'), 'alert', data$treat_label))


################################################################################ 
#   Scale variables
################################################################################ 

data[c(outvars)] = lapply(data[c(outvars)], scale)


################################################################################ 
#   Regressions
################################################################################ 

data[c(outvars)] = lapply(data[c(outvars)], scale)



MODELS = list()

n = 1
for (i in 1:length(treatments)){
  MOD = list()
  for (j in 1:length(outvars)){

    # drop missings
    droper = union(which(is.na(data[outvars[j]])), which(data[outvars[j]]==Inf))

    # keep the right treatment and control group
    keeper = union(which(data$treat_label2 == treatments[i]),  which(data$treat_aggregate == 'control'))
    keeper = setdiff(keeper, droper)

    # select rows
    y = data[keeper, outvars[j]]
    d = data$treated[keeper]

    # regression
    MOD[[outvars_name[j]]] = lm_robust(y ~ d, se_type='HC3')

    print('Done with: ')
    print(n)

    n = n+1
  }
  MODELS[[treatments[i]]] = MOD
}



################################################################################
#   Save results
################################################################################

options(modelsummary_format_numeric_latex="plain")

modelsummary::modelsummary(MODELS[["empathy"]], gof_omit="BIC|AIC|RMSE|R2 Adj.",
                           coef_omit = c(1), stars=c('*' = .1, '**' = .05, '***' = .01),
                           output = paste0(wd_res, "/tables/tabE6_empathy.tex"))

modelsummary::modelsummary(MODELS[["consequences"]], gof_omit="BIC|AIC|RMSE|R2 Adj.",
                           coef_omit = c(1), stars=c('*' = .1, '**' = .05, '***' = .01),
                           output = paste0(wd_res, "/tables/tabE6_consequences.tex"))

modelsummary::modelsummary(MODELS[["alert"]], gof_omit="BIC|AIC|RMSE|R2 Adj.",
                           coef_omit = c(1), stars=c('*' = .1, '**' = .05, '***' = .01),
                           output = paste0(wd_res, "/tables/tabE6_alert.tex"))

cat("\n====================\n")
cat("Saved Table E6")
cat("\n====================\n")

